home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / timex.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  6KB  |  161 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * Copyright (c) David L. Mills 1993                                         *
  4.  *                                                                           *
  5.  * Permission to use, copy, modify, and distribute this software and its     *
  6.  * documentation for any purpose and without fee is hereby granted, provided *
  7.  * that the above copyright notice appears in all copies and that both the   *
  8.  * copyright notice and this permission notice appear in supporting          *
  9.  * documentation, and that the name University of Delaware not be used in    *
  10.  * advertising or publicity pertaining to distribution of the software       *
  11.  * without specific, written prior permission.  The University of Delaware   *
  12.  * makes no representations about the suitability this software for any      *
  13.  * purpose.  It is provided "as is" without express or implied warranty.     *
  14.  *                                                                           *
  15.  *****************************************************************************/
  16.  
  17. /*
  18.  * Modification history timex.h
  19.  *
  20.  * 29 Dec 97    Russell King
  21.  *    Moved CLOCK_TICK_RATE, CLOCK_TICK_FACTOR and FINETUNE to asm/timex.h
  22.  *    for ARM machines
  23.  *
  24.  *  9 Jan 97    Adrian Sun
  25.  *      Shifted LATCH define to allow access to alpha machines.
  26.  *
  27.  * 26 Sep 94    David L. Mills
  28.  *    Added defines for hybrid phase/frequency-lock loop.
  29.  *
  30.  * 19 Mar 94    David L. Mills
  31.  *    Moved defines from kernel routines to header file and added new
  32.  *    defines for PPS phase-lock loop.
  33.  *
  34.  * 20 Feb 94    David L. Mills
  35.  *    Revised status codes and structures for external clock and PPS
  36.  *    signal discipline.
  37.  *
  38.  * 28 Nov 93    David L. Mills
  39.  *    Adjusted parameters to improve stability and increase poll
  40.  *    interval.
  41.  *
  42.  * 17 Sep 93    David L. Mills
  43.  *      Created file $NTP/include/sys/timex.h
  44.  * 07 Oct 93    Torsten Duwe
  45.  *      Derived linux/timex.h
  46.  * 1995-08-13    Torsten Duwe
  47.  *      kernel PLL updated to 1994-12-13 specs (rfc-1589)
  48.  * 1997-08-30    Ulrich Windl
  49.  *      Added new constant NTP_PHASE_LIMIT
  50.  * 2004-08-12    Christoph Lameter
  51.  *      Reworked time interpolation logic
  52.  */
  53. #ifndef _LINUX_TIMEX_H
  54. #define _LINUX_TIMEX_H
  55.  
  56. #include <linux/time.h>
  57.  
  58. #define NTP_API        4    /* NTP API version */
  59.  
  60. /*
  61.  * syscall interface - used (mainly by NTP daemon)
  62.  * to discipline kernel clock oscillator
  63.  */
  64. struct timex {
  65.     unsigned int modes;    /* mode selector */
  66.     long offset;        /* time offset (usec) */
  67.     long freq;        /* frequency offset (scaled ppm) */
  68.     long maxerror;        /* maximum error (usec) */
  69.     long esterror;        /* estimated error (usec) */
  70.     int status;        /* clock command/status */
  71.     long constant;        /* pll time constant */
  72.     long precision;        /* clock precision (usec) (read only) */
  73.     long tolerance;        /* clock frequency tolerance (ppm)
  74.                  * (read only)
  75.                  */
  76.     struct timeval time;    /* (read only) */
  77.     long tick;        /* (modified) usecs between clock ticks */
  78.  
  79.     long ppsfreq;           /* pps frequency (scaled ppm) (ro) */
  80.     long jitter;            /* pps jitter (us) (ro) */
  81.     int shift;              /* interval duration (s) (shift) (ro) */
  82.     long stabil;            /* pps stability (scaled ppm) (ro) */
  83.     long jitcnt;            /* jitter limit exceeded (ro) */
  84.     long calcnt;            /* calibration intervals (ro) */
  85.     long errcnt;            /* calibration errors (ro) */
  86.     long stbcnt;            /* stability limit exceeded (ro) */
  87.  
  88.     int tai;        /* TAI offset (ro) */
  89.  
  90.     int  :32; int  :32; int  :32; int  :32;
  91.     int  :32; int  :32; int  :32; int  :32;
  92.     int  :32; int  :32; int  :32;
  93. };
  94.  
  95. /*
  96.  * Mode codes (timex.mode)
  97.  */
  98. #define ADJ_OFFSET        0x0001    /* time offset */
  99. #define ADJ_FREQUENCY        0x0002    /* frequency offset */
  100. #define ADJ_MAXERROR        0x0004    /* maximum time error */
  101. #define ADJ_ESTERROR        0x0008    /* estimated time error */
  102. #define ADJ_STATUS        0x0010    /* clock status */
  103. #define ADJ_TIMECONST        0x0020    /* pll time constant */
  104. #define ADJ_TAI            0x0080    /* set TAI offset */
  105. #define ADJ_MICRO        0x1000    /* select microsecond resolution */
  106. #define ADJ_NANO        0x2000    /* select nanosecond resolution */
  107. #define ADJ_TICK        0x4000    /* tick value */
  108.  
  109. #define ADJ_OFFSET_SINGLESHOT    0x8001    /* old-fashioned adjtime */
  110. #define ADJ_OFFSET_SS_READ    0xa001    /* read-only adjtime */
  111.  
  112. /* xntp 3.4 compatibility names */
  113. #define MOD_OFFSET    ADJ_OFFSET
  114. #define MOD_FREQUENCY    ADJ_FREQUENCY
  115. #define MOD_MAXERROR    ADJ_MAXERROR
  116. #define MOD_ESTERROR    ADJ_ESTERROR
  117. #define MOD_STATUS    ADJ_STATUS
  118. #define MOD_TIMECONST    ADJ_TIMECONST
  119.  
  120.  
  121. /*
  122.  * Status codes (timex.status)
  123.  */
  124. #define STA_PLL        0x0001    /* enable PLL updates (rw) */
  125. #define STA_PPSFREQ    0x0002    /* enable PPS freq discipline (rw) */
  126. #define STA_PPSTIME    0x0004    /* enable PPS time discipline (rw) */
  127. #define STA_FLL        0x0008    /* select frequency-lock mode (rw) */
  128.  
  129. #define STA_INS        0x0010    /* insert leap (rw) */
  130. #define STA_DEL        0x0020    /* delete leap (rw) */
  131. #define STA_UNSYNC    0x0040    /* clock unsynchronized (rw) */
  132. #define STA_FREQHOLD    0x0080    /* hold frequency (rw) */
  133.  
  134. #define STA_PPSSIGNAL    0x0100    /* PPS signal present (ro) */
  135. #define STA_PPSJITTER    0x0200    /* PPS signal jitter exceeded (ro) */
  136. #define STA_PPSWANDER    0x0400    /* PPS signal wander exceeded (ro) */
  137. #define STA_PPSERROR    0x0800    /* PPS signal calibration error (ro) */
  138.  
  139. #define STA_CLOCKERR    0x1000    /* clock hardware fault (ro) */
  140. #define STA_NANO    0x2000    /* resolution (0 = us, 1 = ns) (ro) */
  141. #define STA_MODE    0x4000    /* mode (0 = PLL, 1 = FLL) (ro) */
  142. #define STA_CLK        0x8000    /* clock source (0 = A, 1 = B) (ro) */
  143.  
  144. /* read-only bits */
  145. #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
  146.     STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
  147.  
  148. /*
  149.  * Clock states (time_state)
  150.  */
  151. #define TIME_OK        0    /* clock synchronized, no leap second */
  152. #define TIME_INS    1    /* insert leap second */
  153. #define TIME_DEL    2    /* delete leap second */
  154. #define TIME_OOP    3    /* leap second in progress */
  155. #define TIME_WAIT    4    /* leap second has occurred */
  156. #define TIME_ERROR    5    /* clock not synchronized */
  157. #define TIME_BAD    TIME_ERROR /* bw compat */
  158.  
  159.  
  160. #endif /* LINUX_TIMEX_H */
  161.